/*
 * @Description: 
 * @Version: 1.0
 * @Date: 2020-07-17 09:45:56
 * @Autor: yudj
 * @LastEditTime: 2020-07-20 14:20:47
 * @LastEditors: Please set LastEditors
 */

// // 导入axios和router。
// import axios from 'axios';
// // import router from '../router';

// axios.defaults.timeout = 5000; //请求超时5秒
// axios.defaults.baseURL ='http://localhost';  //请求base url
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; //设置post请求是的header信息

// //http request 拦截器
// axios.interceptors.request.use(
//     config => {
//       let token = sessionStorage.getItem('token')
//       if (token) {  // 判断是否存在token，如果存在的话，则每个http header都加上token
//         config.headers = {
//           'X-token': token
//         }
//       }
      
//       return config
//     }, 
//     err => {
//       return Promise.reject(err)
//     }
//   )

//   /**
//  * 封装get方法
//  * @param url
//  * @param data
//  * @returns {Promise}
//  */

// export function get(url, params={}, headers={}){
//     return new Promise((resolve, reject) => {
//       axios.get(url,{
//         params: params,
//         headers: headers
//       })
//       .then(response => {
//         resolve(response.data);
//       })
//       .catch(err => {
//         reject(err)
//       })
//     })
//   }

//   /**
//  * 封装post请求
//  * @param url
//  * @param data
//  * @returns {Promise}
//  */

//  export function post(url, data = {}){
//     return new Promise((resolve, reject) => {
//        axios.post(url, data)
//        .then(response => {
//          resolve(response.data);
//        }, err => {
//          reject(err)
//        })
//     })
//   }

import axios from 'axios';
import router from '@/router/index'
// import authorization from '@/api/author'
import store from '../../store/state.js';
import { baseUrl, cancleHTTP } from "./env.js";

import {
  MessageBox,
  Message
} from 'element-ui'
let CancelToken = axios.cancelToken
axios.defaults.timeout = 20000;//超时报错
// store.axiosUrl = process.env.BASEURL; //配置url
store.axiosUrl = baseUrl
window.localStorage.setItem('Url',baseUrl)
let pending = [];
let cancelToken = axios.CancelToken; // `cancelToken` 指定用于取消请求的 cancel token
let cancelPending = (config) => {
  pending.forEach((item, index) => {
    if (!!config) {
      if (item.u == config.url) {
        item.f(); //取消请求
        pending.splice(index, 1); //移除当前请求记录
      };
    } else {
      item.f(); //取消请求
      pending.splice(index, 1); //移除当前请求记录
    }
  });
};
// //验证登录状态
// router.beforeEach((to, from, next) => {
//   if (to.matched.some(record => record.meta.requireAuth)) {
//     let token = localStorage.getItem("token");
//     //如果已经登录 则正常进入
//     if (!!token) {
//       cancelPending();
//       next();

//     } else {
//       next({
//         'name': 'login',
//         'query': {
//           'redirect': to.fullPath
//         }
//       });
//     }
//   } else if (to.name == 'login') { //如果是登录页，则验证如果当前是登录状态自动跳转至系统主页，否则正常进入登录页
//     let token = localStorage.getItem("token");
//     //如果已经登录，则重定向至系统首页
//     if (!!token) {
//       router.push({
//         'name': 'Main'
//       });
//     } else {
//       next();
//     };
//   } else { //其他页面正常进入
//     next();
//   };

// })

// //拦截器
// axios.interceptors.request.use(
//   config => {
//     let token = localStorage.getItem("token");
//     if (!!token) {
//       config.headers = {
//         'Content-Type': 'application/json',
//         'Accept-Language': 'zh-CN',
//         'token': token,
//       }
//     } else {
//       config.headers = {
//         'Content-Type': 'application/json',

//       }
//     }
//     cancelPending(config);
//     config.CancelToken = new cancelToken((c) => {
//       pending.push({
//         'u': config.url,
//         'f': c
//       })
//     })
//     config.data = JSON.stringify(config.data);
//     return config;
//   }

// )
// axios.interceptors.response.use(response=>{
//    if(response.data.code == 401){
//     localStorage.setItem("token",'');
//     router.replace({ name: 'login' })
//    }
//    return response
// })
/**
 * 封装get方法
 * @param url
 * @param data
 * @returns {Promise}
 */

export function fetch(url, data = {}) {
  return new Promise((resolve, reject) => {
    axios.get(store.axiosUrl + url).then(response => {
      if (response && response.data) {
        resolve(response.data);
      }
    })
      .catch(err => {
        reject(err)
      })
  })
}

/**
 * 封装post请求
 * @param url
 * @param data
 * @returns {Promise}
 */
var Promise = require('bluebird');
export function post(url, data = {}) {
  return new Promise((resolve, reject) => {
    axios.post(store.axiosUrl + url, data)
      .then(response => {
        if (response && response.data) {
          resolve(response.data);
        }
      })
      .catch(err => {
        reject(err)
      })
  })
}
/**
 * 封装put请求
 * @param url
 * @param data
 * @returns {Promise}
 */
var Promise = require('bluebird');
export function put(url, data = {}) {
  return new Promise((resolve, reject) => {
    axios.put(store.axiosUrl + url, data)
      .then(response => {
        if (response && response.data) {
          resolve(response.data);
        }
      })
      .catch(err => {
        reject(err)
      })
  })
}